D3 直方布局
2022-04-21
直方布局(Histogram Layout),可以用于表示数据的分布。可分为矩阵直方图(Matrix histogram)和曲线直方图(Curve histogram)两种表达方式。
| ID | DA | FA |
|---|---|---|
| d3.layout.histogram() | 创建一个直方图布局 | |
| histogram.value() | 设置或获取值访问器 | |
| histogram.range() | 设置数据的分布范围,主要分为两个数组指定(分别表述上限(min)以及下线(max)) |
|
| histogram.bins() | 设置数据的分布区间的个数或长度,如果没有参数则默认返回当前设置的值 | |
histogram.bins(count) |
将count作为参数则代表数据的分布区间(bins) 的数量,bins的区间长度则会被均匀的分割 |
|
histogram.bins(thresholds) |
可以指定任意长度的区间(如:[100, 125, 130, 135, 140, 145]) |
|
histogram.bins(function) |
当前函数必须返回 一个thresholds 数组 |
|
histogram.frequency(frequency) |
值为true为统计数量;反之false则是统计频率 |
|
| d3.random.normal() | 用于生成正态分布,主要用于表述一个不明的随机变量 ,通常第一个参数用于表述平均值,第二个参数是标准差 |
数据转换与确定数据
normal 确定数据

normal 即 正态分布,主要用于表示出一个不明的随机变量,通常第一个参数用于表述出平均值,而第二个参数即代表标准差,(Standard Deviation)在概率统计上标准差定义是总体各单位的标准值与其平均数离差的算数平均数的平方根,可以反映出个体间的离散程度,通过下述 Code 你会感觉到每次输出的数据坐标,都是不一样的
1 | /* |
转换数据
通过使用normal生成的随机数据是人类无法直接理解其意思的,因此需要通过使用其直方布局进行转换出人类可理解的数据含义,主要有三个变量,分别为x:区间的下限值、dx:区间的长度、y:此处的区间数量(frequency true)或频率(frequency false)
1 | /* |
绘制
矩形直方图

通过使用 normal 以及 Histogram Layout计算出数据后,通过比例尺来创建x\y轴并绘制矩形,最后形成为矩形直方图。
1 | var padding = { |
需要注意的是,我们需要为此添加CSS样式:
1 | @color: #929292; |
曲线直方图

相比与矩形直方图( Rectangle Histogram)来比,曲线直方图(Curve Histogram)更加的的连贯,在下述的 code 中,主要将坐标轴以及比例尺进行倒序,之后通过line将其绘制路径。
1 | var padding = { |
